﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Controller; // Brug vores class library "Controller"
using Interfaces; // Brug vores class library "Interfaces"

namespace Sorts_F1
{
    public partial class FrmRedigerKoerere : Form
    {
        // Attribut
        ClsSystemController systemController;

        public FrmRedigerKoerere(ClsSystemController systemController) // Modtager controlleren fra start formen
        {
            InitializeComponent();
            this.systemController = systemController; // Istedet for at instansiere en ny controller bruger vi den der bliver sendt med
            this.MinimumSize = this.MaximumSize = this.Size; // Sørg for at formen altid er den nuværende størrelse
        }

        private void FrmRedigerKoerere_Load(object sender, EventArgs e)
        {
            OpdaterFormen();
        }

        private void btnRedigerKoere_Click(object sender, EventArgs e)
        {
            try
            {
                IClsTeams tempTeam = null;

                // Find det team objekt der passer til navnet på det team der er valgt i comboboxen
                foreach (var item in systemController.VisTeams())
                {
                    if (item.TeamNavn == cbTeams.SelectedItem.ToString())
                    {
                        tempTeam = item;
                    }
                }

                systemController.RedigerKoereIDB(txtKoereNavn.Text, (int)cbKoereNummer.SelectedItem, tempTeam);
                systemController.OpdaterKoerereFraDB(); // Download de nye data

                lvKoerere.Items.Clear(); // Clear listview for at gøre klar til indlæsning af ny data
                OpdaterFormen();
                MessageBox.Show("Kørerens oplysninger er ændret");
            }

            catch
            {
                OpdaterFormen();
                MessageBox.Show("Fejl ved redigering af kører");
            }
        }

        private void btnTilbage_Click(object sender, EventArgs e)
        {
            this.Close(); // Lukker formen
        }

        public void OpdaterFormen()
        {
            lvKoerere.Items.Clear(); // Clear listview og gør klar til download af ny data

            systemController.OpdaterKoerereFraDB(); // Download kørere fra databasen
            systemController.OpdaterTeamsFraDB(); // Download teams fra databasen

            // Indlæs kørerene til comboboxen og listviewet
            foreach (var item in systemController.VisKoerere())
            {
                cbKoereNummer.Items.Add(item.KoereNummer);

                ListViewItem lvi = new ListViewItem(); // Instansier listview
                lvi.SubItems[0].Text = item.KoereNummer.ToString();
                lvi.SubItems.Add(item.Navn);
                lvi.SubItems.Add(item.KoereTeam.TeamNavn);
                lvi.Tag = item.KoereNummer;
                lvKoerere.Items.Add(lvi); // Addere subitems til listviewet
            }

            // Indlæs teams i comboboxen
            foreach (var item in systemController.VisTeams())
            {
                cbTeams.Items.Add(item.TeamNavn);
            }

            cbKoereNummer.SelectedIndex = 0; // Vis det første element i comboboxen
            cbTeams.SelectedIndex = 0; // Vis det første element i comboboxen
        }
    }
}
